package AD;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

import entidades.RolProfesor;

public class BDRolProfesor {
    static ArrayList<RolProfesor> listado;
    static String[] campos = new String[] {"id_rol", "id_profesor"};
    
    public static ArrayList<RolProfesor> recuperarRolProfesor() throws Exception {
		String sql = "SELECT  p.nom_profesor, p.ape1_profesor, p.ape2_profesor, " +
				"p.nif_profesor, p.email_profesor, p.tfno, r.nom_rol" +
				" FROM rol r, profesor p, ROL_PROFESOR rp " +
				" where p.id_profesor = rp.id_profesor AND " +
				" r.id_rol=rp.id_rol;";
        Connection conn = null;
        PreparedStatement sentencia = null;
        ResultSet rs = null;
        listado = new ArrayList<RolProfesor>();
        try {
            conn = ConexionBD.abreConnexio();
            sentencia = conn.prepareStatement(sql);
            rs = sentencia.executeQuery();
            almacena(listado, rs);
        } catch (SQLException ex) {
            throw new Exception("No se ha podido recoger los roles \n" + ex.getMessage() + "(" + ex.getErrorCode() + ")");
        } finally {
            ConexionBD.cierraRecursos(conn, rs);
        }
        return listado;
		
	}
    
    private static void almacena(ArrayList<RolProfesor> listadoRoles, ResultSet rs) throws SQLException {
        while (rs.next()) {
            RolProfesor rolProfesorDAO = new RolProfesor();
            rolProfesorDAO.setId_rol(rs.getInt(campos[0]));
            rolProfesorDAO.setId_profesor(rs.getInt(campos[1]));
            listadoRoles.add(rolProfesorDAO);
        }        
    }
    
    public ArrayList<RolProfesor> getRolesProfesores(int indice) {
    	if (listado.size() > 0) {    		
    		if (indice != -1) {
    			ArrayList<RolProfesor> nuevoRolProfesor=new ArrayList<RolProfesor>();
    			nuevoRolProfesor.add(listado.get(indice));
    			return nuevoRolProfesor;
    		} else return listado;
    	}
    	return null;
    }

}
